package grafica.jugador;

import grafica.manejoImagenes.ImagenPrincipalJugador;

import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.ImageIcon;
import javax.swing.table.DefaultTableModel;

import ValueObjects.VOJugador;
import ValueObjects.VOJugadorRanking;
import ValueObjects.VOPartida;
import controller.jugador.PrincipalJugadorController;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.Color;
import java.awt.Toolkit;
import java.util.ArrayList;
import java.util.Iterator;


public class VentanaPrincipalJugador {

	private JFrame frmVentanaJugador;
	private PrincipalJugadorController controller;
	private String nombre;
	private String codigo;
	private JPanel panel;
	private JButton btnJugar;
	private JButton btnActualizar;
	private DefaultTableModel jugadores;
	private JTable tableJugadores;
	private JScrollPane scrollPaneJugadores;
	private JLabel lblRankingGeneral;
	private JButton btnSalir;
	private VOJugador[] j;
	private VentanaVisualizarPartida windows;
	private ImagenPrincipalJugador fondo;
	
	public VentanaPrincipalJugador(String nom,String cod) {
		nombre=nom;
		codigo=cod;
		initialize();
	}
	
	private void Listar(){
		
		ArrayList<VOJugadorRanking> j = controller.listarJugadores();
		if(j!=null){
	        Object[] jug = new Object[4];
	        Iterator iter = j.iterator();
	        VOJugadorRanking jugadorActual = null;
	        while(iter.hasNext()){
	        	jugadorActual = (VOJugadorRanking) iter.next(); 
	            jug[0] = (jugadorActual.getNombre());
	            jug[1] = (jugadorActual.getPuntajeAlMomento());
	            jug[2] = (jugadorActual.getCantidadAcertadas());
	            jug[3] = (jugadorActual.getCantidadErradas());
	            jugadores.addRow(jug); 	
	        }   
		}
	}

	private void initialize() {
				
		frmVentanaJugador = new JFrame();
		
		controller = new PrincipalJugadorController(this);
		
		panel = new JPanel();
		btnJugar = new JButton("Jugar");
		btnActualizar = new JButton("Actualizar");
		
		jugadores = new DefaultTableModel();		
		tableJugadores = new JTable(jugadores);
		fondo = new ImagenPrincipalJugador();
		
		tableJugadores.setModel(jugadores);
		
		jugadores.addColumn("Jugador");
		jugadores.addColumn("Puntaje");
		jugadores.addColumn("Peliculas Acertadas");
		jugadores.addColumn("Peliculas Erradas");
		
		
		tableJugadores.setSize(100, 100);
		tableJugadores.setOpaque(false);
		((JComponent) tableJugadores.getDefaultRenderer(Object.class)).setOpaque(false);
		((JComponent) tableJugadores.getDefaultRenderer(Object.class)).setForeground(Color.WHITE);
		scrollPaneJugadores = new JScrollPane(tableJugadores);
		scrollPaneJugadores.setSize(553, 239);
		scrollPaneJugadores.setLocation(20, 57);
		scrollPaneJugadores.setOpaque(false);
		scrollPaneJugadores.getViewport().setOpaque(false);

		
		panel.add(scrollPaneJugadores, BorderLayout.CENTER);
		panel.add(btnJugar);
		panel.add(btnActualizar);
		
		frmVentanaJugador.setIconImage(Toolkit.getDefaultToolkit().getImage("Imagenes\\icono.png"));
		frmVentanaJugador.setResizable(false);
		frmVentanaJugador.setAutoRequestFocus(false);
		frmVentanaJugador.setTitle("Adivine la pelicula A3");
		frmVentanaJugador.setSize(600,400);
		frmVentanaJugador.setLocationRelativeTo(null);
		frmVentanaJugador.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		fondo.setBounds(0, 0, 600, 400);
		fondo.setBackground(new Color(165,250,142));
		fondo.setLayout(null);
		frmVentanaJugador.getContentPane().add(fondo);
		fondo.add(panel);
		panel.setAutoscrolls(true);
		panel.setRequestFocusEnabled(false);
		panel.setOpaque(false);
		panel.setBounds(0, 0, 600, 400);
		panel.setLayout(null);

		
		btnJugar.setToolTipText("Jugar");
		btnJugar.setFocusPainted(false);
		btnJugar.setHorizontalTextPosition(SwingConstants.CENTER);
		btnJugar.setOpaque(false);
		btnJugar.setSelected(true);
		btnJugar.setForeground(Color.WHITE);
		btnJugar.setIcon(new ImageIcon("Imagenes\\ok.jpg"));
		btnJugar.setFont(new Font("Bernard MT Condensed", Font.PLAIN, 14));
		btnJugar.setBounds(292, 318, 132, 33);
		
		btnActualizar.setFocusPainted(false);
		btnActualizar.setHorizontalTextPosition(SwingConstants.CENTER);
		btnActualizar.setOpaque(false);
		btnActualizar.setSelected(true);
		btnActualizar.setForeground(Color.WHITE);
		btnActualizar.setIcon(new ImageIcon("Imagenes\\actualizar.jpg"));
		btnActualizar.setFont(new Font("Bernard MT Condensed", Font.PLAIN, 14));
		btnActualizar.setBounds(441, 13, 132, 33);
		
		lblRankingGeneral = new JLabel("RANKING GENERAL");
		lblRankingGeneral.setForeground(Color.WHITE);
		lblRankingGeneral.setHorizontalAlignment(SwingConstants.CENTER);
		lblRankingGeneral.setBounds(20, 22, 411, 14);
		lblRankingGeneral.setFont(new Font("Bernard MT Condensed", Font.PLAIN, 14));
		panel.add(lblRankingGeneral);
		
		btnSalir = new JButton("Salir");
		btnSalir.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				setVisible(false);
			}
		});
		btnSalir.setToolTipText("Jugar");
		btnSalir.setSelected(true);
		btnSalir.setOpaque(false);
		btnSalir.setHorizontalTextPosition(SwingConstants.CENTER);
		btnSalir.setForeground(Color.WHITE);
		btnSalir.setFont(new Font("Bernard MT Condensed", Font.PLAIN, 14));
		btnSalir.setFocusPainted(false);
		btnSalir.setBounds(441, 318, 132, 33);
		btnSalir.setIcon(new ImageIcon("Imagenes\\salir.jpg"));
		panel.add(btnSalir);
		
		btnJugar.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				String control = "";
				VOPartida p	= controller.listarDatosPartida(nombre, codigo);
				if(p!=null)
					if(p.getEstaFinalizada())
						control = controller.iniciarPartida(nombre, codigo);
				if(control.equals("")){
					windows = new VentanaVisualizarPartida(nombre,codigo);
					frmVentanaJugador.setVisible(false);
					windows.setVisible(true);
				}
			}
		});
		
		btnActualizar.addActionListener(new ActionListener() {
			
			public void actionPerformed(ActionEvent e) {
				limpiar();		
				Listar();
			}
		});
		Listar();
				
	}
	
	public void setVisible(boolean visible){
		frmVentanaJugador.setVisible(visible);
	}
	void limpiar(){
        while (jugadores.getRowCount()!=0){
                ((DefaultTableModel)jugadores).removeRow(0);
        }
	}
	public void MostrarMensaje(String msj){
		JOptionPane.showMessageDialog(null,msj);
		
	}
}
